home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Controls / Visual Basic Controls.iso / vbcontrol / sheriffa / slsapi.bas < prev    next >
Encoding:
BASIC Source File  |  1999-05-27  |  14.1 KB  |  411 lines

  1. Attribute VB_Name = "SlsApi"
  2. ' This is a part of the Sheriff System Development Kit.
  3. ' Copyright (C) 1997-1998 Acudata Limted.
  4. ' All rights reserved.
  5. '
  6. ' This source code is only intended as a supplement to the
  7. ' Sheriff System Development Kit and related
  8. ' electronic documentation provided with the SDK.
  9.  
  10. 'Challenge protocol
  11. Public Const SLS_NO_PROTOCOL = &H0&
  12. Public Const SLS_BASIC_PROTOCOL = &H1&
  13.  
  14. Public Const SLS_REMOVE_FILES = &H1&    'remove licence files
  15. Public Const SLS_REMOVE_REGISTRY = &H2& 'remove licence registry
  16. Public Const SLS_REMOVE_HISTORY = &H4&  'remove licence history
  17. Public Const SLS_REMOVE_ALL = &H7&      'remove all of above
  18.  
  19. 'state of licence
  20. Public Const SLS_STATE_UNDEFINED = &H0&      'Licence type and contents to be specified
  21. Public Const SLS_STATE_BAD = &H1&            'Licence has being illegally modified
  22. Public Const SLS_STATE_EXPIRED = &H2&        'Licence has expired
  23. Public Const SLS_STATE_EXHAUSTED = &H3&      'Licence units has run out
  24. Public Const SLS_STATE_OK = &H8&             'Licence is valid
  25.  
  26. 'type of licence
  27. Public Const SLS_TYPE_UNDEFINED = &H0&       'Undefined
  28. Public Const SLS_TYPE_UNIT_METER = &H1&      'Unit Metering
  29. Public Const SLS_TYPE_TIME_METER = &H2&      'Time Metering
  30. Public Const SLS_TYPE_EXPIRATION = &H4&      'Expiry Control
  31. Public Const SLS_TYPE_CONCURRENCY = &H8&     'Concurrency Control
  32.  
  33. Public Const SLS_TYPE_LIFETIME_KEY = &H100&  'Lifetime key
  34. Public Const SLS_TYPE_LIFETIME_REF = &H200&  'Lifetime Reference
  35. Public Const SLS_TYPE_UNEXPORTABLE = &H400&  'Unexportable
  36. Public Const SLS_TYPE_STANDALONE = &H800&    'Standalone
  37.  
  38. Type SLS_DATE
  39.     Year    As Long
  40.     Month   As Long
  41.     Day     As Long
  42. End Type
  43.  
  44. Type SLS_LICENCE
  45.     Type    As Long      'type of licence
  46.     Meter   As Long         'for metering, e.g. Unit, Time mertering
  47.     EndDate As SLS_DATE     'for expiration date
  48.     CoUsers As Long         'Concurrent users
  49.     AccessKey As Long       'Access control key
  50. End Type
  51.  
  52. Type SLS_REQUEST
  53.     UnitsReserved As Long
  54. End Type
  55.  
  56. Type SLS_PERMIT
  57.     'State as integer       'state of licence permit
  58.     UnitsGranted As Long
  59.     AccessKey As Long
  60. End Type
  61.  
  62. Type SLS_UPDATE
  63.     UnitsReserved As Long
  64.     UnitsConsumed As Long
  65. End Type
  66.  
  67. Type SLS_RELEASE
  68.     UnitsConsumed As Long
  69. End Type
  70.  
  71. 'types for challenging
  72. Type SLS_MSG_DIGEST
  73.     MessageDigest(16) As Byte 'binary data
  74. End Type
  75.  
  76. Type SLS_CHALLDATA
  77.     SecretIndex As Long
  78.     Random As Long
  79.     MsgDigest As SLS_MSG_DIGEST
  80. End Type
  81.  
  82. Type SLS_CHALLENGE
  83.     Protocol As Long
  84.     Size As Long
  85.     ChallengeData As SLS_CHALLDATA
  86. End Type
  87.  
  88. 'Indentity used by challenge only
  89. Type SLS_IDENTITY
  90.     IdName(128) As Byte
  91.     Version(32) As Byte
  92.     Publisher(256) As Byte
  93. End Type
  94.  
  95. 'Secret used for challenge
  96. Type SLS_SECRET
  97.     Secret(128) As Byte
  98. End Type
  99.  
  100. Type SLS_MAC 'Message Authentication Code
  101.     MessageDigest(16) As Byte    'binary data
  102. End Type
  103.  
  104. 'types for suit implementation
  105. Type SLS_PRODUCT
  106.     ProductID(32) As Byte
  107.     ProductName(128) As Byte
  108. End Type
  109.  
  110. Type SLS_SUIT
  111.     NumberOfProducts As Long
  112.     pProducts As Long
  113. End Type
  114.  
  115. 'Licence Handle
  116. 'typedef DWORD SLS_HANDLE
  117.  
  118. 'LSQueryLicenceInfo
  119. Type SLS_LICENCE_INFO
  120.     'Licence Part
  121.     Type As Long         'type of licence
  122.     Meter As Long           'Units or Days limit
  123.     EndDate As SLS_DATE     'Expiration date
  124.     CoUsers As Long         'Concurrent users
  125.     AccessKey As Long       'Access control key
  126.     'Usage Part
  127.     State As Long        'State of licence
  128.     MeterUsage As Long      'for metering only(units used, days used)
  129.     StartDate As SLS_DATE   'Start date
  130.     ActiveUsers As Long     'Number of active users
  131. End Type
  132.  
  133. 'LSQueryProductInfo
  134. Type SLS_PRODUCT_INFO
  135.     SuitID(32) As Byte
  136.     ProductID(32) As Byte
  137.     ProductName(128) As Byte
  138.     PublisherName(128) As Byte
  139.     PublisherInfo(256) As Byte
  140. End Type
  141.  
  142. Type SLS_OPTIONS
  143.     HeartbeatTime As Long   'heartbeat time
  144.     ReclaimTime As Long     'reclaim time
  145.     Reserved1 As Long       'reserved, should be set to 0
  146.     Reserved2 As Long       'reserved, should be set to 0
  147. End Type
  148.  
  149. '
  150. '[C++ Header: licscode.h]
  151. '
  152.  
  153. 'Everything is fine
  154. Public Const SLS_SUCCESS = &H0&
  155. 'General Error (unknown error)
  156. Public Const SLS_ERROR = &H80041000
  157.  
  158. 'System Error
  159. Public Const SLS_E_SYSTEM_ERROR = &H80041001
  160.  
  161. 'Invalid Product Code
  162. Public Const SLS_E_PRODUCT_CODE = &H80041002
  163. 'Invalid Reference Code
  164. Public Const SLS_E_REFERENCE_CODE = &H80041003
  165. 'Invalid Machine Code
  166. Public Const SLS_E_MACHINE_CODE = &H80041004
  167. 'Invalid System Time
  168. Public Const SLS_E_SYSTEM_TIME = &H80041005
  169. 'Not Enough Memory
  170. Public Const SLS_E_OUT_OF_MEMORY = &H80041006
  171. 'Not Enough Handle
  172. Public Const SLS_E_OUT_OF_HANDLE = &H80041007
  173. 'Illegal Challenge
  174. Public Const SLS_E_CHALLENGE_ILLEGAL = &H80041008
  175. 'Unsuported challenge
  176. Public Const SLS_E_CHALLENGE_UNSUPORTED = &H80041009
  177. 'Connction Sink ID invalid
  178. Public Const SLS_E_CONNECTION_ID = &H8004100A
  179. 'Invalid Queue Number
  180. Public Const SLS_E_QUEUE_NUMBER = &H8004100B
  181. 'Queue Too Long
  182. Public Const SLS_E_QUEUE_TOO_LONG = &H8004100C
  183. 'Failed To Locate Database Path
  184. Public Const SLS_E_DATABASE_PATH = &H8004100D
  185. 'Invalid SuitID
  186. Public Const SLS_E_SUIT_ID = &H8004100E
  187. 'Unregistered Suit
  188. Public Const SLS_E_SUIT_UNREGISTERED = &H8004100F
  189. 'Invalid Augument passed to function
  190. Public Const SLS_E_AUGUMENT_INVALID = &H80041010
  191. 'Invalid Handle
  192. Public Const SLS_E_LICENCE_HANDLE = &H80041011
  193. 'Unregistered product/licence
  194. Public Const SLS_E_LICENCE_UNREGISTERED = &H80041012
  195. 'Licence Undefined
  196. Public Const SLS_E_LICENCE_UNDEFINED = &H80041013
  197. 'Licence (run out of cocurrent users)
  198. Public Const SLS_E_LICENCE_EXCEEDED = &H80041014
  199. 'Licence Exhausted (run out of meter units)
  200. Public Const SLS_E_LICENCE_EXHAUSTED = &H80041015
  201. 'Licence Expired
  202. Public Const SLS_E_LICENCE_EXPIRED = &H80041016
  203. 'Licence Invalid (corrupted, tamped)
  204. Public Const SLS_E_LICENCE_INVALID = &H80041017
  205. 'Licence Suspended
  206. Public Const SLS_E_LICENCE_SUSPENDED = &H80041018
  207. 'Licence Terminated
  208. Public Const SLS_E_LICENCE_TERMINATED = &H80041019
  209. 'Licence Unavaliable
  210. Public Const SLS_E_LICENCE_UNAVAILABLE = &H8004101A
  211. 'Licence unit not defined
  212. Public Const SLS_E_UNIT_UNDEFINED = &H8004101B
  213. 'Licence unit shortage (units been reserved)
  214. Public Const SLS_E_UNIT_EXCEEDED = &H8004101C
  215. 'Index used to enumerate products
  216. Const SLS_E_PRODUCT_INDEX = &H8004101D
  217. 'Bad Secret
  218. Public Const SLS_E_BAD_SECRET = &H8004101E
  219. 'Bad MAC(Message Authentication Code)
  220. Public Const SLS_E_BAD_MAC = &H8004101F
  221.  
  222. 'Licence File Error(used by Sheriff Light only)
  223. 'The file could not be located.
  224. Public Const SLS_E_FILE_NOT_FOUND = &H80041020
  225. 'All or part of the path is invalid.
  226. Public Const SLS_E_FILE_BAD_PATH = &H80041021
  227. 'The permitted number of open files was exceeded.
  228. Public Const SLS_E_FILE_TOO_MANY = &H80041022
  229. 'The file could not be accessed
  230. Public Const SLS_E_FILE_ACCESS_DENIED = &H80041023
  231. 'There was an attempt to use an invalid file handle.
  232. Public Const SLS_E_FILE_BAD_HANDLE = &H80041024
  233. 'There was an error trying to set the file pointer.
  234. Public Const SLS_E_FILE_BAD_SEEK = &H80041025
  235. 'There was a hardware error.
  236. Public Const SLS_E_FILE_HARDIO = &H80041026
  237. 'SHARE.EXE was not loaded, or a shared region was locked.
  238. Public Const SLS_E_FILE_SHARING = &H80041027
  239. 'There was an attempt to lock a region that was already locked.
  240. Public Const SLS_E_FILE_LOCKING = &H80041028
  241. 'The disk is full.
  242. Public Const SLS_E_FILE_DISK_FULL = &H80041029
  243. 'The end of file was reached.
  244. Public Const SLS_E_FILE_EOF = &H8004102A
  245. 'CRC error
  246. Public Const SLS_E_FILE_BAD_CRC = &H8004102B
  247. 'Signature error
  248. Public Const SLS_E_FILE_BAD_SIGNATURE = &H8004102C
  249. 'Corruption
  250. Public Const SLS_E_FILE_BAD_DATA = &H8004102D
  251. 'Disk Signature error
  252. Public Const SLS_E_DISK_BAD_SIGNATURE = &H8004102E
  253. 'Failed to Remove Licence
  254. Public Const SLS_E_FILE_REMOVE_FAILED = &H8004102F
  255. 'Invalid Licence Path
  256. Public Const SLS_E_PATH_INVALID = &H80041030
  257. 'Failed to create licecne path
  258. Public Const SLS_E_PATH_CREATE = &H80041031
  259. 'Access(Read/Write) Denied
  260. Public Const SLS_E_PATH_ACCESS_DENIED = &H80041032
  261. 'Registery operation failure
  262. Public Const SLS_E_REG_FAILURE = &H80041033
  263. 'Licence File been tampered
  264. Public Const SLS_E_BAD_LICENCE = &H80041034
  265. 'Registry has been tampered
  266. Public Const SLS_E_BAD_REGISTRY = &H80041035
  267. 'Machine Signature is wrong
  268. Public Const SLS_E_BAD_MACHINE = &H80041036
  269. 'Failed to get machine code
  270. Public Const SLS_E_OP_MACHINE_CODE = &H80041037
  271. 'Failed to get machine signature
  272. Public Const SLS_E_OP_MACHINE_SIGN = &H80041038
  273. 'Failed to get file signature
  274. Public Const SLS_E_OP_FILE_SIGN = &H80041039
  275. 'Failed to get disk signature
  276. Public Const SLS_E_OP_DISK_SIGN = &H8004103A
  277. 'Failed to terminate licence
  278. Public Const SLS_E_OP_TERMINATION = &H8004103B
  279. 'licence error
  280. Public Const SLS_E_LICENCE_BAD_TIME = &H8004103C
  281. 'licence error
  282. Public Const SLS_E_LICENCE_BAD_UNIT = &H8004103D
  283. 'licence error
  284. Public Const SLS_E_LICENCE_BAD_DATE = &H8004103E
  285. 'licence error
  286. Public Const SLS_E_LICENCE_BAD_COUSERS = &H8004103F
  287. 'licence error
  288. Public Const SLS_E_LICENCE_BAD_ACCESSKEY = &H80041040
  289. 'Licence key is incorrect
  290. Public Const SLS_E_LICENCE_BAD_LICKEY = &H80041041
  291. 'bad import licence key
  292. Public Const SLS_E_IMPORT_BAD_LICKEY = &H80041042
  293. 'incorrect import source signature
  294. Public Const SLS_E_IMPORT_BAD_SOURCE = &H80041043
  295. 'Cannot reinstate licence
  296. Public Const SLS_E_REINSATTE_BAD_SOURCE = &H80041044
  297. 'Export not allowed
  298. Public Const SLS_E_EXPORT_NOT_ALLOWED = &H80041045
  299. 'User Index out of range
  300. Public Const SLS_E_BAD_USER_INDEX = &H80041046
  301. 'Machchine Signatures in reference do not match
  302. Public Const SLS_E_UPID_SIGNATURE_REF = &H80041047
  303. 'Product Signatures in reference do not match
  304. Public Const SLS_E_UMID_SIGNATURE_REF = &H80041048
  305. 'Machchine Signatures in licence key do not match
  306. Public Const SLS_E_UPID_SIGNATURE_KEY = &H80041049
  307. 'Refernece Signatutes in licence key do not match
  308. Public Const SLS_E_REF_SIGNATURE_KEY = &H8004104A
  309.  
  310. '
  311. '[C++ Header: SlsApi.h]
  312. '
  313. Declare Function SLS_Register Lib "SlsApi" ( _
  314.                     ByVal pszProductID As String, _
  315.                     ByVal pszProductName As String, _
  316.                     ByVal pszLicencePath As String) As Long
  317.  
  318. Declare Function SLS_License Lib "SlsApi" ( _
  319.                     ByVal pszProductID As String, _
  320.                     pLicence As SLS_LICENCE, _
  321.                     pChallenge As SLS_CHALLENGE) As Long
  322.  
  323. Declare Function SLS_REQUEST Lib "SlsApi" Alias "SLS_Request" ( _
  324.                     ByVal pszProductID As String, _
  325.                     ByVal pszUserName As String, _
  326.                     pRequest As SLS_REQUEST, _
  327.                     pPermit As SLS_PERMIT, _
  328.                     plLicenceHandle As Long, _
  329.                     pChallenge As SLS_CHALLENGE) As Long
  330.  
  331. Declare Function SLS_UPDATE Lib "SlsApi" Alias "SLS_Update" ( _
  332.                     ByVal pszProductID As String, _
  333.                     ByVal lLicenceHandle As Long, _
  334.                     pUpdate As SLS_UPDATE, _
  335.                     pPermit As SLS_PERMIT, _
  336.                     pChallenge As SLS_CHALLENGE) As Long
  337.  
  338. Declare Function SLS_RELEASE Lib "SlsApi" Alias "SLS_Release" ( _
  339.                     ByVal pszProductID As String, _
  340.                     ByVal lLicenceHandle As Long, _
  341.                     pRelease As SLS_RELEASE, _
  342.                     pChallenge As SLS_CHALLENGE) As Long
  343.  
  344. Declare Function SLS_GetReference Lib "SlsApi" ( _
  345.                     ByVal pszProductID As String, _
  346.                     ByVal pszReference As String) As Long
  347.  
  348. Declare Function SLS_SetLicence Lib "SlsApi" ( _
  349.                     ByVal pszProductID As String, _
  350.                     ByVal pszReference As String, _
  351.                     ByVal pszLicenceKey As String) As Long
  352.  
  353. Declare Function SLS_QueryLicenceInfo Lib "SlsApi" ( _
  354.                     ByVal pszProductID As String, _
  355.                     pLicenceInfo As SLS_LICENCE_INFO) As Long
  356.  
  357. 'Challenge
  358. Declare Function SLS_CreateChallenge Lib "SlsApi" ( _
  359.                     pSecretArray As SLS_SECRET, _
  360.                     ByVal nSecrectSize As Integer, _
  361.                     pbStream As Any, _
  362.                     ByVal nStreamSize As Integer, _
  363.                     pChallenge As SLS_CHALLENGE) As Long
  364.  
  365. Declare Function SLS_VerifyChallenge Lib "SlsApi" ( _
  366.                     pSecretArray As SLS_SECRET, _
  367.                     ByVal nSecrectSize As Integer, _
  368.                     pbStream As Any, _
  369.                     ByVal nStreamSize As Integer, _
  370.                     pChallenge As SLS_CHALLENGE) As Long
  371.  
  372. 'SLS_GetErrorMessage
  373. 'Get Error Mesaage. pszErrorMessage points to buffer allocated by caller,
  374. 'the minimum length of the buffer is 256 bytes
  375. Declare Function SLS_GetErrorMessage Lib "SlsApi" ( _
  376.                     ByVal hr As Long, _
  377.                     ByVal pszErrorMessage As String) As Long
  378.  
  379. 'Others
  380. Declare Function SLS_IsProductInstalled Lib "SlsApi" ( _
  381.                     ByVal pszProductID As String) As Long
  382.                     
  383. Declare Function SLS_IsProductRegistered Lib "SlsApi" ( _
  384.                     ByVal pszProductID As String) As Long
  385.                     
  386. Declare Function SLS_IsProductLicensed Lib "SlsApi" ( _
  387.                     ByVal pszProductID As String) As Long
  388.                     
  389. Declare Function SLS_SetReclaimTime Lib "SlsApi" ( _
  390.                     ByVal nMinutes As Long) As Long
  391.                     
  392. Declare Function SLS_SetOptions Lib "SlsApi" ( _
  393.                     ByVal pszProductID As String, _
  394.                     ByVal lLicenceHandle As Long, _
  395.                     pOptions As SLS_OPTIONS, _
  396.                     pChallenge As SLS_CHALLENGE) As Long
  397.                     
  398. Declare Function SLS_Terminate Lib "SlsApi" ( _
  399.                     ByVal pszProductID As String, _
  400.                     ByVal pszTerminationCode As String) As Long
  401.                     
  402. Declare Function SLS_Remove Lib "SlsApi" ( _
  403.                     ByVal pszProductID As String, _
  404.                     ByVal nRemoveOptions As Long, _
  405.                     pChallenge As SLS_CHALLENGE) As Long
  406.  
  407. '//Get LS Status Code
  408. Function SLS_SCODE(hr As Long) As Long
  409.     SLS_SCODE = hr And &HFFFF&
  410. End Function
  411.